C++ 串流问题

C++ 串流问题,c++,xcode,macos,C++,Xcode,Macos,以下是一些以前与我的代码一起使用的代码,但现在出现了问题: #include <iostream> #include <fstream> #include <sstream> #include <cstring> using namespace std; int main() { stringstream out; out << 100; cout << out.str(); } #包括 #包括 #包括 #

以下是一些以前与我的代码一起使用的代码,但现在出现了问题:

#include <iostream>
#include <fstream>
#include <sstream>
#include <cstring>

using namespace std;    
int main()
{
 stringstream out;
 out << 100;
 cout << out.str();
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
流出来;

out对我有效。如果有问题,应该是你的gcc


顺便说一句,也许你必须添加fflush(stdout);在cout之后它对我有效。如果有问题,应该是你的gcc


顺便说一句,也许你必须添加fflush(stdout)另一个想法是,在升级之前,你有一个.O文件,它在某种程度上使事情变得混乱。从C++编译器的两个不同版本混合.O文件会引起各种奇怪的问题。我也不打折头文件问题,尽管String应该包括String。< /P> < P>另一个ID。EA是你在升级之前遗留的.O文件,它在某种程度上使事情变得混乱。从C++编译器的两个不同版本混合.O文件会导致各种奇怪的问题。我也不打折头文件问题,尽管SsFoW应该包含String。

< P>不应该添加Bebe字符串的结尾。你要转换成字符串吗

cout << out.str() << sdt::ends;

cout在转换为字符串之前,是否应该添加字符串的结尾

cout << out.str() << sdt::ends;

cout在相同条件下获得完全相同的问题Snow Leopard 64位XCode 3.2基本SDK 10.6,切换到基本SDK 10.5即可解决此问题

显然这是SDK 10.6的问题

正确的解决方法是删除预处理器宏:

  • _GLIBCXX_调试=1
  • _GLIBCXX_DEBUG_PEDANTIC=1
从预处理器设置(或返回到SDK 10.5,如上所述)


在相同条件下获得完全相同的问题雪豹64位XCode 3.2基本SDK 10.6,切换到基本SDK 10.5即可解决此问题

显然这是SDK 10.6的问题

正确的解决方法是删除预处理器宏:

  • _GLIBCXX_调试=1
  • _GLIBCXX_DEBUG_PEDANTIC=1
从预处理器设置(或返回到SDK 10.5,如上所述)


你的意思是
#include
而不是
#include
?前者声明
std::string
,它是
stringstream::str()
的返回类型;后者只声明与
strcmp()
等无关的C函数,而不是
多余的(从理论上讲,
缺失),我看你的代码没有任何问题。它应该可以正常工作。你是从shell还是IDE中运行它的?你是说
#include
而不是
#include
?前者声明
std::string
,这是
stringstream::str()的返回类型
;后者仅声明与之无关的C函数,如
strcmp()
等,而不是
多余(理论上,
缺失),我看不出你的代码有任何问题。它应该可以正常工作。你是从shell还是从IDE中运行它?这也没有解决问题。我在Xcode中转到项目设置,更改了OS X 10.6->10.5中所有配置的基本SDK,这就解决了问题。你知道为什么吗?@Fu4ny:the
std::flush
在这种情况下,没有必要这样做,因为在程序退出时,流仍然会被刷新。(唯一的问题可能是Patrick在关闭的
}
上有一个断点,他想知道为什么他的输出没有出现。但这不太可能。)我真的不知道为什么,但我只是添加了flush来确保流被刷新。gcc或STDOUT应该有问题。这也没有解决问题。我在Xcode中的项目设置中更改了所有配置的基本SDK,从OS X 10.6->10.5,这就解决了问题。知道为什么吗?@Fu4ny:the
std::flush实际上是不必要的,因为在程序退出时,流仍然会被刷新。(唯一的问题可能是Patrick在关闭的
}
上有一个断点,他想知道为什么他的输出没有出现。但这不太可能。)我真的不知道为什么,但我只是添加了flush以确保流被刷新。gcc或stdout应该有问题