这是针对学校的,所以我要求提示,如果可能的话,请求明确的答案。
我需要用“我的名字当前社区学院”这个短语输出“当前社区学院” 我已经有一个循环来利用现有的社区学院。
这基本上是我到目前为止所做的:
#include "stdafx.h"
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
string phrase = "My Name current community college";
cout << phrase << endl << endl;
for (int i = 0; i < phrase.length(); i++)
{
if (phrase[i] == ' ')
{
phrase[i + 1] = toupper(phrase[i + 1]);
}
}
return 0;
}
我尝试过使用str.find和str.erase,但这些似乎有限,因为它们只能搜索invididual字符。有没有办法可以搜索“当前”(这将是我社区学院的名称),并在字符串中出现该单词之前删除所有内容?
更新:感谢Sam,我能完成任务,这就是我现在所拥有的:
#include "stdafx.h"
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
string phrase = "My Name current community college";
cout << phrase << endl << endl;
for (int i = 0; i < phrase.length(); i++)
{
if (phrase[i] == ' ')
{
phrase[i + 1] = toupper(phrase[i + 1]);
}
}
size_t pos = phrase.find("Current");
string output = phrase.substr(pos);
cout << output << endl << endl;
system("PAUSE");
return 0;
}
虽然我很痴迷,只是得到一个A并没有达到我的目标。是否有办法完成此任务而无需创建新字符串,例如,保留我的单个字符串但删除“当前”之前的所有内容。
我明白了,我根本不需要子串。您可以使用str.find()
与str.erase()
结合使用size_t pos
删除所有内容直到找到的单词:
#include "stdafx.h"
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
string phrase = "My Name current community college";
cout << phrase << endl << endl;
for (int i = 0; i < phrase.length(); i++)
{
if (phrase[i] == ' ')
{
phrase[i + 1] = toupper(phrase[i + 1]);
}
}
size_t pos = phrase.find("Current"); //find location of word
phrase.erase(0,pos); //delete everything prior to location found
cout << phrase << endl << endl;
system("PAUSE");
return 0;
}
您也可以替换
size_t pos = phrase.find("Current");
phrase.erase(0,pos);
只有phrase = phrase.substr(phrase.find("Current"));
并且也有效。
答案 0 :(得分:1)
您可以使用find
查找要开始的索引,您可以使用substr
选择要返回的部分。
size_t position = str.find("Current");
string newString = phrase.substr(position); // get from position to the end
答案 1 :(得分:0)
您可以运行for循环来查找前几个字母以查找Current。然后在找到它的索引处,您可以从该索引中获取子字符串。请参阅以下代码:
for (int i = 0; i < phrase.length(); i++){
if (phrase[i] == 'C' && phrase[i + 1] == 'u'){
phrase = phrase.substr(8);
}
}
更理想的情况是,您可能希望使用phrase.find(“Current”),因为它可以省去for循环的麻烦。