使用XCode 5.0.2并使用Alex Allain作为参考,挑选C ++并在OS X 10.9上进行操作。
以下代码编译得很好并正确输出
#include <iostream>
#include <string>
using namespace std;
int main()
{
std::string user_first_name = "test";
std::cout << user_first_name << "\n";
return 0;
}
当我添加一个getline函数时,代码似乎是编译但没有输出。
#include <iostream>
#include <string>
using namespace std;
int main()
{
std::string user_first_name = "test";
std::getline( std::cin, user_first_name, '\n' );
std::cout << user_first_name << "\n";
return 0;
}
实际上,调试导航器的内存已经填满了条形图(尽管实际内存使用量固定为276 KB)。为什么我会被这么简单的事情/概念所困扰?
我做了一些挖掘,很可能这与文本编码问题有关。我使用的是Unicode(UTF-8)默认值。编码不是我熟悉的,也不是我在Windows上学习时必须处理的东西。我如何通过这个?
答案 0 :(得分:0)
我不能评论XCode或OS X的使用,但我的理解是std :: cin总是给你一个窄的(单字节)字符流。在Windows中(至少使用Visual Studio),我认为无论您是编译UTF8(所有ASCII字符都是单字节)还是UTF16(所有ASCII字符都是2字节),它都能正常工作。运行时库可能会根据需要为您进行转换。
我不确定“填满酒吧”意味着什么,但也许只是因为你正在寻找未初始化的记忆。如果你认为这是一个编码问题,也许尝试使用wstring / wcin而不是string / cin,看看是否有帮助。