从函数中获取char时的cin.getline()等价。

时间:2012-04-14 23:24:01

标签: c++ arrays char

根据我的理解,cin.getLine获取第一个char(我认为它是一个指针),然后得到它的长度。当cin为char时我用过它。我有一个函数返回一个指向数组中第一个char的指针。是否有相当于将数组的其余部分放入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   

2 个答案:

答案 0 :(得分: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"
}

如果字符数组不是以空值终止但具有给定大小N,请改为std::string(p, N)

答案 1 :(得分:0)

首先,如果cmd_strchar的数组而infile返回指向字符串的指针,则第一次赋值会给出错误。它尝试为单个字符分配指针。

您似乎想要的是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作为指向函数的指针传递,则无效。