如
stirng line=“abcdefg”;
string a;
要把 line的第3个给string a 应该如何做?
a=line[3];
报错说 char 不能转换成string。
22 个解决方案
#1
怎么可能不能转换呢
#2
请问怎么转,具体写一下。
最好能给多个方案
stirng line=“abcdefg”;
string a;
要把 line的第3个给string a 应该如何做?
a=line[3];
报错说 char 不能转换成string。
最好能给多个方案
stirng line=“abcdefg”;
string a;
要把 line的第3个给string a 应该如何做?
a=line[3];
报错说 char 不能转换成string。
#3
在后面加个'\0'
char temp[] = {line[3],'\0'};
string a = temp;
char temp[] = {line[3],'\0'};
string a = temp;
#4
加0?肯定不是这个问题 ,直接string a= line[3];转换没问题,问题出在别的地方,楼主检查下别的地方
#5
谢谢,还有别的方案吗?
比如一句话搞定。
不知道
string a=line[3].c_str();
行不行?
比如一句话搞定。
不知道
string a=line[3].c_str();
行不行?
#6
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int main(){
string a = "abcdefg";
string c = a.substr(2,1);
cout<<c;
return 0;
}
#7
不知道 c_str() 具体是什么功能?
我这里是传参数
难道是因为参数是 f(std::sting& a)
然后我把line[3]传给了 string&
f(line[3])
然后错了?
为什么会错呢?
我这里是传参数
难道是因为参数是 f(std::sting& a)
然后我把line[3]传给了 string&
f(line[3])
然后错了?
为什么会错呢?
#8
谢谢,之前我用这个解决了。
我想知道,为什么会错呢?
谁能解答一下
#9
3楼方法是正确的
string类型和字符串注意要有'\0'
"abc"其实在默认后面有'\0'的,只是没用显式的写出来
string类中没用提供如下的赋值运算
string &operater=(char ch) ;
只提供了
string &operater=(const string &str) ;
所以如下赋值也是不安全的,注意字符串结尾必须有'0'
string类型和字符串注意要有'\0'
"abc"其实在默认后面有'\0'的,只是没用显式的写出来
string类中没用提供如下的赋值运算
string &operater=(char ch) ;
只提供了
string &operater=(const string &str) ;
所以如下赋值也是不安全的,注意字符串结尾必须有'0'
char a[] = {'a','b'} ;
string str2(a) ;
#10
参数类型不匹配啊,一个是string的引用类型,一个是char
#11
那把char 传给 string的引用类型 除了 a.substr(2,1);
还有什么别的办法呢?
谢谢
#12
char放入string可以用push_back,因为string基本等于vector<char>
string line="abcdefg";另外注意,虽然你可以把'\0'放进string,但实际string并不需要'\0',它自己管理长度
string a;
a.push_back(line[3]);
#13
f(std::string& a)
{
}
a.substr(2,1);返回的是string,所以传给f()没问题
而line[3]是char,string并没有定义自动转换char到string的构造器,所以失败
{
}
a.substr(2,1);返回的是string,所以传给f()没问题
而line[3]是char,string并没有定义自动转换char到string的构造器,所以失败
#14
+=
#15
别的方法,也就是把string当作vector<char>来操作就行了,随便举个例子
void f(std::string& a)
{
cout << a << endl;
}
int main()
{
string line="abcdefg";
f(string(line.begin()+2, line.begin()+3));
return 0;
}
#16
string a="woods";
string b;
b=a.substr(3,1);
cout<<b;<<endl //b="o";
string b;
b=a.substr(3,1);
cout<<b;<<endl //b="o";
#17
应该用
b=a.at(3);
吧
b=a.at(3);
吧
#18
需要将a先初始化
#include <iostream>
using namespace std;
int main()
{
string line="abcdefg" ;
string a = "";
a = line[3];
cout << a.c_str() << endl;
return 0;
}
#19
建议完整看看C++ Primer 4th。
你这样学习,会存在大量盲区的。还是系统学习一下比较好
你这样学习,会存在大量盲区的。还是系统学习一下比较好
#20
应该用
a=line.at(3);
吧
a=line.at(3);
吧
#21
我用c-free 3.5 没有报错啊
#22
a.push_back(line[3]);
#1
怎么可能不能转换呢
#2
请问怎么转,具体写一下。
最好能给多个方案
stirng line=“abcdefg”;
string a;
要把 line的第3个给string a 应该如何做?
a=line[3];
报错说 char 不能转换成string。
最好能给多个方案
stirng line=“abcdefg”;
string a;
要把 line的第3个给string a 应该如何做?
a=line[3];
报错说 char 不能转换成string。
#3
在后面加个'\0'
char temp[] = {line[3],'\0'};
string a = temp;
char temp[] = {line[3],'\0'};
string a = temp;
#4
加0?肯定不是这个问题 ,直接string a= line[3];转换没问题,问题出在别的地方,楼主检查下别的地方
#5
谢谢,还有别的方案吗?
比如一句话搞定。
不知道
string a=line[3].c_str();
行不行?
比如一句话搞定。
不知道
string a=line[3].c_str();
行不行?
#6
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int main(){
string a = "abcdefg";
string c = a.substr(2,1);
cout<<c;
return 0;
}
#7
不知道 c_str() 具体是什么功能?
我这里是传参数
难道是因为参数是 f(std::sting& a)
然后我把line[3]传给了 string&
f(line[3])
然后错了?
为什么会错呢?
我这里是传参数
难道是因为参数是 f(std::sting& a)
然后我把line[3]传给了 string&
f(line[3])
然后错了?
为什么会错呢?
#8
谢谢,之前我用这个解决了。
我想知道,为什么会错呢?
谁能解答一下
#9
3楼方法是正确的
string类型和字符串注意要有'\0'
"abc"其实在默认后面有'\0'的,只是没用显式的写出来
string类中没用提供如下的赋值运算
string &operater=(char ch) ;
只提供了
string &operater=(const string &str) ;
所以如下赋值也是不安全的,注意字符串结尾必须有'0'
string类型和字符串注意要有'\0'
"abc"其实在默认后面有'\0'的,只是没用显式的写出来
string类中没用提供如下的赋值运算
string &operater=(char ch) ;
只提供了
string &operater=(const string &str) ;
所以如下赋值也是不安全的,注意字符串结尾必须有'0'
char a[] = {'a','b'} ;
string str2(a) ;
#10
参数类型不匹配啊,一个是string的引用类型,一个是char
#11
那把char 传给 string的引用类型 除了 a.substr(2,1);
还有什么别的办法呢?
谢谢
#12
char放入string可以用push_back,因为string基本等于vector<char>
string line="abcdefg";另外注意,虽然你可以把'\0'放进string,但实际string并不需要'\0',它自己管理长度
string a;
a.push_back(line[3]);
#13
f(std::string& a)
{
}
a.substr(2,1);返回的是string,所以传给f()没问题
而line[3]是char,string并没有定义自动转换char到string的构造器,所以失败
{
}
a.substr(2,1);返回的是string,所以传给f()没问题
而line[3]是char,string并没有定义自动转换char到string的构造器,所以失败
#14
+=
#15
别的方法,也就是把string当作vector<char>来操作就行了,随便举个例子
void f(std::string& a)
{
cout << a << endl;
}
int main()
{
string line="abcdefg";
f(string(line.begin()+2, line.begin()+3));
return 0;
}
#16
string a="woods";
string b;
b=a.substr(3,1);
cout<<b;<<endl //b="o";
string b;
b=a.substr(3,1);
cout<<b;<<endl //b="o";
#17
应该用
b=a.at(3);
吧
b=a.at(3);
吧
#18
需要将a先初始化
#include <iostream>
using namespace std;
int main()
{
string line="abcdefg" ;
string a = "";
a = line[3];
cout << a.c_str() << endl;
return 0;
}
#19
建议完整看看C++ Primer 4th。
你这样学习,会存在大量盲区的。还是系统学习一下比较好
你这样学习,会存在大量盲区的。还是系统学习一下比较好
#20
应该用
a=line.at(3);
吧
a=line.at(3);
吧
#21
我用c-free 3.5 没有报错啊
#22
a.push_back(line[3]);