【问题标题】:Trouble reading char by char from a file in C++无法从 C++ 中的文件中逐个字符地读取字符
【发布时间】:2012-07-22 06:21:27
【问题描述】:

所以我有这段代码:

ifstream sFile;
sFile.open(argv[1]);
stringstream ss;
unsigned char aChar;
string aString;

while (sFile >> noskipws >> aChar) {
    ss << noskipws << aChar;
}
ss >> noskipws >> aString;
cout << noskipws << aString << endl;

我的文件包含: “她闻起来”

在标准输出中,我看到的只是“SHE”。我已经浪费了很多时间来解决这个问题,有人可以帮我理解为什么会这样吗?

另外,这是否能够读取扩展 ascii 字母表中的字符?

【问题讨论】:

  • 使用getline (ss, aString); 代替ss &gt;&gt; aString 应该可以,但我从未真正尝试过getlinestringstream
  • 这似乎工作了。你有没有机会知道上面的代码是否忽略了任何字符?我需要能够处理扩展的 ascii 字母表。
  • 您可能需要 UTF8 或 UTF16 字符串,具体取决于您需要存储的内容。

标签: c++ string file-io stringstream


【解决方案1】:

查看此页面以了解 noskipws:

http://www.cplusplus.com/reference/iostream/manipulators/noskipws/

在示例中,它显示了您遇到的问题,可以通过以下方式解决:

iss.seekg(0);

如果你这样做,这应该可以工作:

sFile.seekg(0);

在你的 while 循环之前。 希望这是正确的/有帮助。

【讨论】:

    猜你喜欢
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 2014-11-22
    相关资源
    最近更新 更多