代码
我创建了以下程序:
#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 Compiler 编译,并带有 -std=c++0x 标志(没有警告)。
问题
我遇到的问题是,如果我输入一个包含一个或多个空格的字符串(即“一个和两个”),那么只会打印第一个空格之前的字母(即“o”、“n”、“e”)。
我试过的
唯一想到的就是做一个快速的现实检查。我添加了这一行:
std::cout << "Val: " << int(' ') << std::endl;
并且,正如预期的那样,打印的值不是0(因为很明显,它不是空的 '\0' 字符)......
我不确定我错过了什么。是否是这样的行:
std::cin >> c;
使用''作为某种终止字符?
谢谢。