这让我疯了.我已经花了两个多小时试图解决这个问题......
这是我的问题.我正在开发一个适用于贝叶斯网络的大型程序.这是主要功能:
using namespace std;
int main()
{
DSL_network net;
initializeNetwork(net);
setEvidence(net);
net.SetDefaultBNAlgorithm(7);
net.SetNumberOfSamples(80000);
cout << "Samples:\t" << net.GetNumberOfSamples() << endl;
updateEvidence(net);
//net.WriteFile("test.dsl");
return(DSL_OKAY);
}
Run Code Online (Sandbox Code Playgroud)
一切正常.当我想要打印出一个字符串时出现问题:
using namespace std;
int main()
{
//simple string creation
string a = "test";
//should print out "test"
cout << a << endl;
DSL_network net;
initializeNetwork(net);
setEvidence(net);
net.SetDefaultBNAlgorithm(7);
net.SetNumberOfSamples(80000);
cout << "Samples:\t" << net.GetNumberOfSamples() << endl;
updateEvidence(net);
//net.WriteFile("test.dsl");
return(DSL_OKAY);
}
Run Code Online (Sandbox Code Playgroud)
这是输出(只是打印字符串a ...):
▀ÇΦy♠≈6♦
会发生什么事?
更新:
int main()
{
//simple string creation
string a = "test";
//should print out "test"
cout << a << endl;
return(DSL_OKAY);
}
Run Code Online (Sandbox Code Playgroud)
仍然打印
?Ç?y??6 ?
Run Code Online (Sandbox Code Playgroud)
大新闻: 这是最近的.我创建了一个全新的项目并粘贴了Neil Butterworth发布的代码(感谢顺便说一下).我运行代码并正确打印.然后我将两个.lib文件添加到新项目中的链接器(用于SMILE库的smile.lib,以及用于套接字的wsock32.lib).
我再次尝试了代码,它正确地打印了第一个"测试",然后打印了giberish.这是我链接在一起的.lib之一的问题.我自己试了一下,看看它们是否只是冲突,而且似乎是smile.lib库导致了问题.我需要进入他们的文档并弄清楚原因.
有任何想法吗?
谢谢大家的帮助
谢谢
这很奇怪.我总是喜欢把问题解决到最小的情况.运行它时,以下程序会执行什么操作?
using namespace std;
int main() {
string a = "test";
cout << a << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果这样可行,那么还有其他错误,您需要一次添加一行直到失败.然后检查线非常谨慎("我在捉wabbits").
根据您的编辑,它可能是使用的不同字符串类.试试这个:
int main() {
std::string a = "test";
std::cout << a << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
更新:
由于它适用于新项目而不是当前项目,请检查以下内容.
string作为其他东西(并且包括-Dstring=somethingelse编译器的命令行选项).std::string而不仅仅是检查行为string.| 归档时间: |
|
| 查看次数: |
1918 次 |
| 最近记录: |