从字符串元素中获取字符串

时间:2015-11-28 20:49:44

标签: c++ string stl

我是C ++的新手。我有一个问题,我如何从字符串元素(一个元素或字符)中获取字符串。 就像,我有一个名为std::string的{​​{1}},其中包含h。现在我有另一个名为"HKK"的字符串。现在我想从k获取元素编号1(k)并将其设置为h

k

但是编译器(g ++)给出的错误是:

#include<iostream>
#include<string>

using namespace std;

int main() {
   string h = "HKK";
   string k = h.at(1); //K
   cout << k << endl;
   return 0;
}

修改 如果我这样做的功能如下:

 error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
 string k = h.at(1);
                  ^

有没有解决方法呢?

void out(string out) {
   cout << "Out : " << out << endl;
}

int main() {
   string h = "HKK";
   out(h.at(1)); //K
   return 0;
}

请帮帮我! 谢谢 对不起英文不好

2 个答案:

答案 0 :(得分:1)

  

如何从字符串元素(一个元素或字符)中获取字符串。就像,我有std::string名为h,它包含“HKK”

您使用std::string::at

std::string h = "HKK";
std::string k;
k += h.at(1); //K

或您使用std::string::operator[]

k += h[1];
  

现在我有另一个名为string的{​​{1}}。现在我想从k获取元素编号1(k)并将其设置为'k'。

您使用h

std::string::replace

或您使用std::string k = "HkK"; k.replace( 1, 1, "k" );

std::string::operator[]

答案 1 :(得分:1)

虽然我个人不喜欢你的function电话,但我仍然提供解决方案,如下所示: -

void out(string out) 
{
   cout << "Out : " << out << endl;
}

int main() 
{
   string h = "HKK";
   out(string().append(1,h.at(1))); //K
   return 0;
}

在这里,您可以使用string创建一个临时string()变量&amp; append 1个字符(例如h.at(1))。因此out是函数out中的字符串,只有一个值,即K

但是我总是建议您使用non-temporary而不是临时用户。它们更加安全和安全。不容易出错。