0

据我了解 cin.getLine 得到第一个字符(我认为它是一个指针),然后得到它的长度。我在 cin 为 char 时使用过它。我有一个函数返回指向数组中第一个字符的指针。是否有等效的方法可以将数组的其余部分转换为我可以使用整个数组的字符。我在下面解释了我正在尝试做的事情。该功能工作正常,但如果有帮助,我可以发布该功能。

cmd_str[0]=infile();// get the pointer from a function
cout<<"pp1>";
cout<< "test1"<<endl;
//  cin.getline(cmd_str,500);something like this with the array from the function                                                   
cout<<cmd_str<<endl; this would print out the entire array
cout<<"test2"<<endl;
length=0;
length= shell(cmd_str);// so I could pass it to this function   
4

2 回答 2

1

您可以使用字符串流:

char const * p = get_data();  // assume null-terminated

std::istringstream iss(std::string(p));

for (std::string line; std::getline(iss, line); )
{
    // process "line"
}

如果字符数组不是以 null 结尾但具有给定的 size N,请std::string(p, N)改为说。

于 2012-04-14T23:33:49.867 回答
0

首先,如果cmd_str是一个数组charinfile返回一个指向字符串的指针,那么第一个赋值会给你一个错误。它尝试将指针分配给单个字符。

你似乎想要的是strncpy

strncpy(cmd_str, infile() ARRAY_LENGTH - 1);
cmd_str[ARRAY_LENGTH - 1] = '\0';

我确保将字符串终止符添加到数组中,因为如果strncpy复制所有ARRAY_LENGTH - 1字符,它将不会附加终止符。

如果cmd_str是一个正确的数组(即声明为char cmd_str[ARRAY_LENGTH];),那么您可以在我的示例中使用sizeof(cmd_str) - 1而不是。ARRAY_LENGTH - 1但是,如果cmd_str作为指向函数的指针传递,这将不起作用。

于 2012-04-14T23:30:30.403 回答