我创建了以下程序:
#include <iostream>
void f(char v[])
{
for(char* p = v; *p != 0; p++)
{
std::cout << *p << std::endl;
}
}
int main()
{
std::cout << int(' ') << std::endl;
char c[256];
std::cin >> c;
f(c);
return 0;
}
我在Code :: Blocks中用GNU GCC编译器编译了-std = c ++ 0x标志(没有警告)。
我遇到的问题是,如果我输入一个包含一个或多个空格的字符串(即“一和二”),则只打印第一个空格之前的字母(即'o','n','e “)。
唯一想到的是快速检查现实。我添加了一行:
std::cout << "Val: " << int(' ') << std::endl;
并且,正如预期的那样,打印的值不是 0(因为很明显,它不是null'\ 0'字符)...
我不确定我错过了什么。是这样的线:
std::cin >> c;
使用''作为某种终止字符?
感谢。
答案 0 :(得分:2)
std::cin >> c;
只会读取由空格分隔的一个单词。这是所有>>
运营商的功能。
如果您想阅读整行,请改用getline
函数。
答案 1 :(得分:2)
流操作符>>
是格式化输入,它使用空格作为字段分隔符。如果要在输入中保留空格,请使用std::getline()
或流成员函数read()
。
答案 2 :(得分:1)
尝试getline
输入您的句子,空格用作cin>>
输入之间的分隔符。