我想将std :: string转换为char*或char []数据类型.
std::string str = "string";
char* chr = str;
Run Code Online (Sandbox Code Playgroud)
结果:"错误:无法将'std :: string'转换为'char'...".
有什么方法可以做到这一点?
我正在做一些维护工作,遇到类似以下的事情:
std::string s;
s.resize( strLength );
// strLength is a size_t with the length of a C string in it.
memcpy( &s[0], str, strLength );
Run Code Online (Sandbox Code Playgroud)
我知道使用&s [0]如果它是std :: vector会是安全的,但是这是std :: string的安全使用吗?
将可变长度十六进制字符串转换为"01A1"包含该数据的字节数组的最佳方法是什么.
即转换这个:
std::string = "01A1";
Run Code Online (Sandbox Code Playgroud)
进入这个
char* hexArray;
int hexLength;
Run Code Online (Sandbox Code Playgroud)
或这个
std::vector<char> hexArray;
Run Code Online (Sandbox Code Playgroud)
所以当我把hexdump -C它写入文件时,我得到包含的二进制数据01A1.
void Foo::bar(const std::string& foobar) {
// ...
const char* foobar2 = (char*)foobar;
// ...
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,我在编译期间遇到有关无效转换的错误.
有没有其他方式转换std::string为const char*?
有没有办法获得"原始"缓冲区oa std :: string?
我在想类似的东西CString::GetBuffer().例如,使用CString我会这样做:
CString myPath;
::GetCurrentDirectory(MAX_PATH+1, myPath.GetBuffer(MAX_PATH));
myPath.ReleaseBuffer();
Run Code Online (Sandbox Code Playgroud)
那么,std :: string有类似的东西吗?
可能是一个&或类似的遗失(我是cpp的noob).
我有
string R = "somthing";
char* S;
Run Code Online (Sandbox Code Playgroud)
我将如何复制R到S
我刚刚做了一个看似常见的新手错误:
首先,我们阅读了许多教程之一,如下所示:
#include <fstream>
int main() {
using namespace std;
ifstream inf("file.txt");
// (...)
}
Run Code Online (Sandbox Code Playgroud)
其次,我们尝试在代码中使用类似的东西,如下所示:
#include <fstream>
int main() {
using namespace std;
std::string file = "file.txt"; // Or get the name of the file
// from a function that returns std::string.
ifstream inf(file);
// (...)
}
Run Code Online (Sandbox Code Playgroud)
第三,新手开发人员对一些神秘的编译器错误消息感到困惑.
问题是,ifstream的需要const * char 作为构造函数的参数.
该解决方案是的std :: string为const*字符转换.
现在,真正的问题是,对于一个新手来说,几乎所有教程中给出的"file.txt"或类似的例子看起来都像std :: string.
那么,"我的文本"是std :: string,c-string还是*char,还是取决于上下文?
您能否举例说明"我的文本"将如何根据上下文进行不同的解释?
[编辑:我认为上面的例子会让它显而易见,但我应该更明确一点:我的意思是双引号中包含的任何字符串的类型,即"myfilename.txt",而不是单词的含义'串'.]
谢谢.
我们都知道自动附加到C字符串末尾的空字符... C++字符串对象怎么样?它的末尾是否还有一个空字符?
非常感谢!
string a = "asdf";
cout<<&a[0];
cout<<a[0];
Run Code Online (Sandbox Code Playgroud)
为什么这两个输出不同?为什么&a[0]不是地址而是整个字符串?