在C ++中删除字符串中的特殊字符

时间:2010-12-13 14:37:20

标签: c++

我有以下

string myStr = "myname-abc";

string myStr1 = strstr(myStr.c_str(), "-");

现在在我的Str1中我有-abc。但我不希望“ - ”面前我想要“abc”我如何使用字符串数据类型。

感谢您的帮助。

7 个答案:

答案 0 :(得分:2)

string myStr1 = strstr(mStr.c_str(), "-") + 1;

或者如果您想避免转换为C样式字符串:

string myStr1(m_Str, m_Str.find('-') + 1);

答案 1 :(得分:2)

不确定我是否关注,但你想要删除第一个元素?

str.erase(0, 1); // erases 1 element starting from position 0

此外,如果您只想删除-以外的所有内容:

str.erase(0, str.find('-') + 1); 

如果无法保证您为该程序提供的数据在某处-,则应检查str.find('-')的{​​{1}}的返回值,以及未出现时的返回值找到了。

答案 2 :(得分:1)

size_t pos = myStr.find('-');
if (pos != std::string::npos)
{
    myStr1 = myStr.substr(pos + 1);
}

答案 3 :(得分:0)

该程序输出

abc abc

int main()
{
    string myStr = "myname-abc";
    string myStr1 = strstr(myStr.c_str(), "abc");

    int index = 0;
    while(myStr[index++] != '-'){}
    string myStr2 = myStr.substr(index);

    cout << myStr1 << " " << myStr2 << endl;

    return 0;
}

答案 4 :(得分:0)

std::string myStr("myname-abc");
std::string myStr1(++std::find(myStr.begin(), myStr.end(), '-'),
                   myStr.end());

答案 5 :(得分:0)

如果我理解你的要求,那就是从字符串中删除“ - ”的实例?如果是这样,以下内容也将有效..

string foo("-abc");
string::size_type fm = foo.find('-');
while (fm != string::npos)
{
  foo.erase(foo.begin() + fm);
  fm = foo.find('-', fm); // find the next instance of "-"
}

答案 6 :(得分:-1)

enter image description here

 #include<iostream.h>
 #include<conio.h>
 void main()
 {
 clrscr();
 char a[30];
 cout<<"enter any string ";
 cin.get(a,30);
 char b[30];
 for(int i=0;a[i]!='\0';i++)
 {
 if(a[i]!='!' && a[i]!='#'&& a[i]!='@' && a[i]!='$' && a[i]!='%' && a[i]!='^' && a[i]!='&'    && a[i]!='*' && a[i]!='?')
 {
 b[i]=a[i];
 cout<<b[i];
 } }
 getch();
  }