【问题标题】:C string output not performing as expectedC 字符串输出未按预期执行
【发布时间】:2015-12-14 09:57:27
【问题描述】:

在 Windows 7 系统上的 Visual Studio Express 2013 中运行的 C 中,我有以下代码,用于打印文本文件中出现注释的行。此类行在输入文件中由 # 符号表示为行中的第一个字符。假设一行是:

#George Washington lives here

当我执行程序时,它会打印出来:

comment: α°/

为什么我的代码没有打印出该行?检测这些行并以其他方式处理它们没有问题。

string str;
ifstream in;
in.open(filename); 
if (in.is_open()) 
   getline (in, str);
   while (in) {
   if (str[0] == '#') { printf("\ncomment: %s", str); }

【问题讨论】:

  • 我认为你的 if 块应该放在括号中
  • 这看起来更像 C++ 而不是 C。
  • 看起来您的 getlinewhile 行的顺序有误。

标签: c getline


【解决方案1】:

在 Visual Studio 2013 中,您可以在 Unicode 和多字节之间配置字符集。可以在项目规范中找到。

要“规范化”字符串,您可以添加 c_str()

printf("\ncomment: %s", str.c_str());

【讨论】:

  • 是的,问题很可能是编码不匹配。不,c_strdoesn't normalize 以任何有意义的方式。
  • 感谢洛伦兹和所有人。做到了! C++ 新手(是的,您是正确的@Klas-Lindbäck),但学习速度很快。这将帮助我更深入地研究字符串、c-strings 和所有好东西的工作原理。但是现在,我得到了我想要的输出!谢谢!
  • ..对不起洛伦兹。作为一个新手,我还不能投票赞成你的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-22
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
  • 2021-08-27
  • 1970-01-01
  • 2012-02-08
相关资源
最近更新 更多