将C风格的字符串转换为C++的最佳方式std::string
?在过去,我使用stringstream
s完成了它。有没有更好的办法?将C风格的字符串转换为C++ std :: string
回答
C++字符串有一个构造函数,可以让你转换C风格的字符串:
char* myStr = "This is a C string!";
std::string myCppString = myStr;
现在我也必须`删除myStr;`不是? – 2015-11-06 14:23:03
@BarnabasSzabolcs不,这不是必要的。你只需要删除新分配的内存。指向字符串的指针不需要解除分配。 – templatetypedef 2015-11-06 16:07:19
您可以从C-字符串直接初始化一个std::string
:
std::string s = "i am a c string";
std::string t = std::string("i am one too");
检查的不同构造字符串分类:documentation 您可能感兴趣的:
//string(char* s)
std::string str(cstring);
和:
//string(char* s, size_t n)
std::string str(cstring, len_str);
如果你的意思char*
到std::string
,您可以使用构造。
char* a;
std::string s(a);
或者如果string s
已经存在,只是写:
s=std::string(a);
一般(没有宣布新的存储),你可以只使用1参数构造函数的C字符串变成一个字符串右值:
string xyz = std::string("this is a test") +
std::string(" for the next 60 seconds ") +
std::string("of the emergency broadcast system.");
然而,这并不构成字符串时按引用传递到一个函数(一个问题,我只是碰到了),如工作
void ProcessString(std::string& username);
ProcessString(std::string("this is a test")); // fails
你需要做参考const引用:
void ProcessString(const std::string& username);
ProcessString(std::string("this is a test")); // works.
C++11
:过载一个字符串操作
std::string operator ""_s(const char * str, std::size_t len) {
return std::string(str, len);
}
auto s1 = "abc\0\0def"; // C style string
auto s2 = "abc\0\0def"_s; // C++ style std::string
C++14
:从std::string_literals
命名空间使用操作
using namespace std::string_literals;
auto s3 = "abc\0\0def"s; // is a std::string
- 1. 如何将std :: string转换为C风格的字符串
- 2. 转换系统:字符串^(C#字符串)到C++的std :: string
- 3. 在C++中将std :: string转换为Unicode字符串
- 4. 将boost std :: string :: const_iterator转换为字符串和int C++
- 5. 将std :: string转换为c字符串数组
- 6. C++/CX:将std :: string转换为Platform :: String^
- 7. 将字符串转换到C风格的字符串
- 8. 如何将C风格的printf格式转换为C#字符串格式?
- 9. 从std :: string转换为字符串^
- 10. 将Haskell ByteStrings转换为C++ std :: string
- 11. 在C++中将float转换为std :: string
- 12. 将std :: string或string ^转换为C++/cli中的字节数组
- 13. 功能对于C风格的字符串和C++的std既:: string的
- 14. 将字符串转换为int在C++
- 15. C++ - 将字符串转换为字符
- 16. 转换C风格的刺来的std :: string内部构造
- 17. 将String ^转换为标准C++字符串
- 18. 如何将std :: decimal :: decimal128转换为C++中的字符串
- 19. c#将字符串转换为变量
- 20. 将C++字符串转换为NSString
- 21. C++将int转换为字符串?
- 22. 转换的std :: string到V8 ::字符串
- 23. 将标准C++字符串转换为字符串^
- 24. C#将字符串转换为数字
- 25. 如何将Objective-C字符串转换为C字符串?
- 26. 从的std :: string转换为char * C++中
- 27. 将C风格铸件转换为C++风格铸件
- 28. C++ fread()转换成std :: string
- 29. 如何将ArrayList转换为C#中的字符串数组(string [])#
- 30. 如何将String ^转换为C++ CLI中的字符串?
什么是cstring?你的意思是来自MFC的`CString`吗?或者一个以空字符结尾的char数组(一个C字符串)?或者是其他东西? – 2011-01-21 23:43:26