C 字符串输出未按预期执行

标签 c getline

在 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); }

最佳答案

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

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

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

关于C 字符串输出未按预期执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32631890/

相关文章:

c++ - 如何在不阻塞输入的情况下使用 getline?

c - 获取 UDP 套接字的随机端口

c - 尽管有足够的可用内存 (32 GB),但在 malloc() 12 GB 内存后收到 "segmentation fault:11"

编译器能否将 `(void *) 0` 中的 `execl(prog, arg, (void*) 0)` 转换为适当类型的空指针?

c - C语言如何在屏幕中间打印一段文字?

c++ - 从 .txt 文件中读取一行并插入到变量中

c++ - char 数组存储太多字符? (c++)

c++ - 遍历文件的每一行

c++ - 在 C++ 中逐行读取 const 数据

c - C 和 CUDA-C 代码中的 NVCC 链接错误