我需要使用一个std::字符串来存储由fgets()检索的数据。为此,我需要将fgets()的char*返回值转换为std::string存储在数组中。如何做到这一点呢?
当前回答
从C样式字符串转换为c++ std字符串更容易
有三种方法可以将C样式字符串转换为c++ std字符串
第一个是使用构造函数,
char chText[20] = "I am a Programmer";
// using constructor
string text(chText);
第二个是使用string::assign方法
// char string
char chText[20] = "I am a Programmer";
// c++ string
string text;
// convertion from char string to c++ string
// using assign function
text.assign(chText);
第三个是赋值操作符(=),其中字符串类使用操作符重载
// char string
char chText[20] = "I am a Programmer";
// c++ string
// convertion from char string to c++ string using assignment operator overloading
string text = chText;
第三个也可以写成如下-
// char string
char chText[20] = "I am a Programmer";
// c++ string
string text;
// convertion from char string to c++ string
text = chText;
第三个比较简单,可以在两种情况下使用
当我们声明和初始化时 当我们在对象创建或初始化后多次赋值时
其他回答
我需要使用std::string来存储由fgets()检索的数据。
为什么在编程c++时使用fgets() ?为什么不是std::getline()?
我一直在努力与MSVC2005使用std::string(char*)构造函数,就像最高评级的答案。当我在始终受信任的http://en.cppreference.com/w/cpp/string/basic_string/basic_string上看到这个变体被列为#4时,我认为即使是旧的编译器也提供这个功能。
我花了很长时间才意识到这个构造函数绝对拒绝匹配(unsigned char*)作为参数!我得到了这些无法理解的错误消息,关于无法匹配std::string参数类型,这绝对不是我的目标。只是用std::string((char*)ucharPtr)转换参数解决了我的问题…咄!
从C样式字符串转换为c++ std字符串更容易
有三种方法可以将C样式字符串转换为c++ std字符串
第一个是使用构造函数,
char chText[20] = "I am a Programmer";
// using constructor
string text(chText);
第二个是使用string::assign方法
// char string
char chText[20] = "I am a Programmer";
// c++ string
string text;
// convertion from char string to c++ string
// using assign function
text.assign(chText);
第三个是赋值操作符(=),其中字符串类使用操作符重载
// char string
char chText[20] = "I am a Programmer";
// c++ string
// convertion from char string to c++ string using assignment operator overloading
string text = chText;
第三个也可以写成如下-
// char string
char chText[20] = "I am a Programmer";
// c++ string
string text;
// convertion from char string to c++ string
text = chText;
第三个比较简单,可以在两种情况下使用
当我们声明和初始化时 当我们在对象创建或初始化后多次赋值时
通过构造函数传入:
const char* dat = "my string!";
std::string my_string( dat );
你可以使用string.c_str()函数来实现相反的效果:
std::string my_string("testing!");
const char* dat = my_string.c_str();
const char* charPointer = "Hello, World!\n";
std::string strFromChar;
strFromChar.append(charPointer);
std::cout<<strFromChar<<std::endl;
推荐文章
- 为什么我的程序不能在Windows 7下用法语编译?
- 如何获取变量的类型?
- 什么是奇怪的重复模板模式(CRTP)?
- 连接两个向量的最佳方法是什么?
- 在c++中,是通过值传递更好,还是通过引用到const传递更好?
- 在STL中deque到底是什么?
- Windows上最好的免费c++分析器是什么?
- 如何自动转换强类型枚举为int?
- 在一个类中使用具有成员函数的泛型std::function对象
- 'for'循环中的后增量和前增量产生相同的输出
- 虚函数和纯虚函数的区别
- c++中的_tmain()和main()有什么区别?
- 内存泄漏是否正常?
- 当启用c++ 11时,std::vector性能回归
- 什么时候使用哪种指针?