c++中怎么获取字符串的首地址,或者说将字符串赋给指针?
c++中,我先从文本中获取字符串ifstreamin("change.txt");for(strings;getline(in,s);)然后,我想讲字符串s赋给指针*st...
c++中,我先从文本中获取字符串
ifstream in("change.txt");
for(string s;getline(in,s); )
然后,我想讲字符串s赋给指针*str,用下边这个语句可以吗?
char *str=&s; 展开
ifstream in("change.txt");
for(string s;getline(in,s); )
然后,我想讲字符串s赋给指针*str,用下边这个语句可以吗?
char *str=&s; 展开
4个回答
展开全部
如果想将string转换成指针,可以使用string类的c_str函数。c_str()返回const char*,指向一个字符数组,数组里存的字符串就是原string的值,而且最后以'\0'结尾。不过由于是const char*,无法修改。
样例程序(摘自http://www.cplusplus.com/reference/string/string/c_str/):
// strings and c-strings
#include <iostream>
#include <cstring>
#include <string>
int main ()
{
std::string str ("Please split this sentence into tokens");
char * cstr = new char [str.length()+1];
std::strcpy (cstr, str.c_str());
// cstr now contains a c-string copy of str
char * p = std::strtok (cstr," ");
while (p!=0)
{
std::cout << p << '\n';
p = std::strtok(NULL," ");
}
delete[] cstr;
return 0;
}
当然如果只是单纯地想得到首字符的地址,可以先找到首字符,然后用&取地址。
样例程序:
#include <iostream>
#include <string>
int main()
{
std::string s = "test";
char *p1 = &s[0];
*p1 = 'b';
std::cout << s << std::endl; //best
char *p2 = &s.at(0);
*p2 = 'f';
std::cout << s << std::endl; //fest
char *p3 = &s.front(); //仅C++11及以上支持
*p3 = 'r';
std::cout << s << std::endl; //rest
return 0;
}
展开全部
char *str = (char*)s.c_str();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char *str=s.c_str() ;
更多追问追答
追问
也不行
error C2440: 'initializing' : cannot convert from 'const char *' to 'char *'
Conversion loses qualifiers
追答
const char *str=s.c_str() ; //这样不允许改这个变量的里的数据,不知道你是不是会修改其中的内容
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char *str=s
追问
不行啊
error C2440: 'initializing' : cannot convert from 'class std::basic_string,class std::allocator >' to 'char *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询