''似乎被视为'\ 0'?

时间:2013-01-21 10:37:41

标签: c++

代码

我创建了以下程序:

#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;

使用''作为某种终止字符?

感谢。

3 个答案:

答案 0 :(得分:2)

std::cin >> c;

只会读取由空格分隔的一个单词。这是所有>>运营商的功能。

如果您想阅读整行,请改用getline函数。

答案 1 :(得分:2)

流操作符>>格式化输入,它使用空格作为字段分隔符。如果要在输入中保留空格,请使用std::getline()或流成员函数read()

答案 2 :(得分:1)

尝试getline输入您的句子,空格用作cin>>输入之间的分隔符。