我需要将double存储为字符串.我知道我可以使用,printf如果我想显示它,但我只是想将它存储在一个字符串变量中,以便我以后可以将它存储在地图中(作为值,而不是键).
int i = 4;
string text = "Player ";
cout << (text + i);
Run Code Online (Sandbox Code Playgroud)
我想要它打印Player 4.
上面显然是错误的,但它显示了我在这里要做的事情.有没有一种简单的方法可以做到这一点,还是我必须开始添加新的包含?
C#具有语法功能,您可以在一行中将多种数据类型连接在一起.
string s = new String();
s += "Hello world, " + myInt + niceToSeeYouString;
s += someChar1 + interestingDecimal + someChar2;
Run Code Online (Sandbox Code Playgroud)
什么是C++中的等价物?据我所知,你必须在单独的行上完成所有操作,因为它不支持使用+运算符的多个字符串/变量.这没关系,但看起来并不整洁.
string s;
s += "Hello world, " + "nice to see you, " + "or not.";
Run Code Online (Sandbox Code Playgroud)
上面的代码产生错误.
itoa()是一个非常方便的函数,可以将数字转换为字符串.Linux似乎没有itoa(),是否有相同的功能或我必须使用sprintf(str, "%d", num)?
我在我的程序中有这个函数将整数转换为字符串:
QString Stats_Manager::convertInt(int num)
{
stringstream ss;
ss << num;
return ss.str();
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行这个时,我得到错误:
aggregate 'std::stringstream ss' has incomplete type and cannot be defined
Run Code Online (Sandbox Code Playgroud)
我不确定这意味着什么.但如果您知道如何修复它或需要更多代码,请发表评论.谢谢.
为什么这段代码会导致Debug Assertion失败?
std::string query;
int ClientID = 666;
query = "select logged from login where id = ";
query.append((char *)ClientID);
Run Code Online (Sandbox Code Playgroud) counter 是一个 int
void SentryManager::add(std::string name,std::shared_ptr<Sentry>){
name = name + std::to_string(counter);
}
Run Code Online (Sandbox Code Playgroud)
什么是阻止此错误的最佳方法?当我懒惰时,我只是制作了int long long(或其他东西),但我确信有更好的解决方法.
错误信息:
sentrymanager.cpp(8): error C2668: 'std::to_string' : ambiguous call to overloaded function
Run Code Online (Sandbox Code Playgroud)
我正在使用Visual C++ 2010 Express.
在C++中,从函数返回函数local std :: string变量的最佳方法是什么?
std::string MyFunc()
{
std::string mystring("test");
return mystring;
}
std::string ret = MyFunc(); // ret has no value because mystring has already gone out of scope...???
Run Code Online (Sandbox Code Playgroud) 我尝试了两种不同的方式来附加int一个std::string,令我惊讶的是,我得到了不同的结果:
#include <string>
int main()
{
std::string s;
s += 2; // compiles correctly
s = s + 2; // compiler error
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么我在使用+=运算符时编译并正常工作,但在使用+运算符时失败?
我不认为问题是如何连接std :: string和int?
在那个问题中,没有答案使用+=operator.And +=
和+operator 之间的区别std::string是解决我怀疑的关键.
坦率地说,这个问题是解释为什么c ++难以掌握的好例子.
我已经看到了这个答案,我想(如果C++ 11已经提出了一种本地更好的方法来连接和可能格式化字符串).
"更好"我的意思实际上是单行,就像在几乎所有更高级别的语言中一样(如果它支持像python的"格式化字符串"%(元组)语法这样的奖励点,但我想这真的是希望太多了).
理想的结果应该是这样的:
my_func("bla bla bla" << int(my_int) << "bla bla bla");
Run Code Online (Sandbox Code Playgroud)
答案中列出的唯一几乎不可接受的方法是快速格式化的方法,但我想知道C++ 11是否能够做得更好.
c++ ×9
string ×4
c++11 ×2
stdstring ×2
c ×1
double ×1
int ×1
linux ×1
qt ×1
return-value ×1
std ×1
stringstream ×1
visual-c++ ×1