cout 没有输出,但 printf 有
cout no output but printf does
我对C++编程很陌生,但我正在尝试编写一些代码,从字符串中过滤特定单词,然后执行特定操作。由于某种原因,代码看不到字符串中的文本。
printf("%s n", data.c_str());
cout << data;
这绝对没有显示任何内容 - 这意味着我无法使用.find
或将其写入文件。
printf("%s n", data);
这恰恰显示了我需要什么。
我正在使用汇编将代码写入数据:
mov data, EDX
为什么我只能使用最后一种方法?
编辑:数据启动方式为: std::string data;
如果指向字符串的指针为 null,则所有后续调用 cout停止工作
const char* s=0;
cout << "shown on coutn";
cout << "not shown" << s << "not shown eithern";
cout << "by bye cout, not shownn";
这两个函数调用并不等效,因为n
at printf
刷新流。尝试:
cout << data << endl;
确保你使用了
#include <string>
在您的文件头中。有了这个,你应该能够使用
std::cout << data << endl;
没有问题。如果您为 std 使用全局命名空间,您可能不需要 std::,但无论如何我都会使用它来帮助您更快地调试它并消除它可能出现的问题。
简而言之
如果你不在其末尾放置换行符,您将遇到cout问题!
详细地
尝试在cout
中添加endl
(例如 std::cout << data << std::endl
),或使用以下说明激活 cout 的"立即输出"(无需先换行)。
std::cout << std::unitbuf;
完整示例:
std::cout << std::unitbuf;
std::cout << data;
// ... a lot of code later ...
std::cout << "it still works";
旁注:这与输出缓冲有关,正如名称unitbuf
所暗示的那样(如果您想查找此处真正发生的事情)。
这样也可以重写当前行,这是一个很好的例子,你需要这个;-)
实例
using namespace std;
cout << "I'm about to calculate some great stuff!" << endl;
cout << unitbuf;
for (int x=0; x<=100; x++)
{
cout << "r" << x << " percent finished!";
// Calculate great stuff here
// ...
sleep(100); // or just pretend, and rest a little ;-)
}
cout << endl << "Finished calculating awesome stuff!" << endl;
言论:
- \r(回车符)将光标置于行的第一个位置(不带换行符)
- 如果在以前编写的行中写入较短的文本,请确保在末尾使用空格字符覆盖它
在流程中的某处输出:
I'm about to calculate some great stuff!
45 percent finished!
.. 过了一段时间:
I'm about to calculate some great stuff!
100 percent finished!
Finished calculating awesome stuff!
相关文章:
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- Printf 和 Echo 提供不同的输出
- CUDA内核printf()在终端中不产生输出,在探查器中工作
- 为什么在杂注 omp 关键之后多次调用 printf 会产生乱码输出?
- 如何捕获C 功能printf()的输出
- 为什么printf和cout为此无符号int提供了不同的输出
- 为什么 printf 函数在以下代码中显示所需的输出
- 如何将 printf 流输出重定向到.csv文件
- 整数输出格式.什么是 printf(%.3x) 的类似物
- 在QT中的主窗口中显示printf输出
- Win32应用程序使用printf将输出写入控制台
- printf( "%d %dn" ,i++,i++) 输出
- 为什么这段使用 printf 和 cout 的代码没有预期的输出?
- 在打印相同的变量时为 cout 和 printf 获取不同的输出
- 带有printf的C++奇怪输出
- printf输出不受全局区域设置的影响
- 为什么 printf() 在指针中显示与 cout 不同的地址输出C++
- cout 没有输出,但 printf 有
- 如何捕获 printf 的输出
- 在c++中使用printf输出浮点数