C++ 如何按字符分割字符串?C++;
我正在做一个有趣的国际民航组织随机翻译程序,我几乎完成了,但我有一个小问题。如何按每个字符拆分字符串?例如,我想要的输出是; 国际民航组织字母表中翻译的mike一词是: m:迈克 i:印第安纳州 k:公斤 e:回声 到目前为止,我只是得到; 国际民航组织字母表中翻译的mike一词是: 迈克 印第安纳州 公斤 回音 显然,我的文章主要是代码,我必须添加更多细节,所以我添加这句话是希望满足需求。此外,翻译应该是正确的顶部彼此,而不是一个额外的空间下降。我有问题,我不知道如何解决C++ 如何按字符分割字符串?C++;,c++,C++,我正在做一个有趣的国际民航组织随机翻译程序,我几乎完成了,但我有一个小问题。如何按每个字符拆分字符串?例如,我想要的输出是; 国际民航组织字母表中翻译的mike一词是: m:迈克 i:印第安纳州 k:公斤 e:回声 到目前为止,我只是得到; 国际民航组织字母表中翻译的mike一词是: 迈克 印第安纳州 公斤 回音 显然,我的文章主要是代码,我必须添加更多细节,所以我添加这句话是希望满足需求。此外,翻译应该是正确的顶部彼此,而不是一个额外的空间下降。我有问题,我不知道如何解决 #include &
#include <iostream>
#include <string>
using namespace std;
int main()
{
string word = " ", phonetic;
int count = 0;
cout << "Enter a word: ";
cin >> word;
while(count < word.length())
{
switch(word.at(count))
{
case 'A': case 'a': phonetic += " Alpha\n";
break;
case 'B': case 'b': phonetic += " Bravo\n";
break;
case 'C': case 'c': phonetic += " Charlie\n";
break;
case 'D': case 'd': phonetic += " Delta\n";
break;
case 'E': case 'e': phonetic += " Echo\n";
break;
case 'F': case 'f': phonetic += " Foxtrot\n";
break;
case 'G': case 'g': phonetic += " Golf\n";
break;
case 'H': case 'h': phonetic += " Hotel\n";
break;
case 'I': case 'i': phonetic += " Indiana\n";
break;
case 'J': case 'j': phonetic += " Juliet\n";
break;
case 'K': case 'k': phonetic += " Kilo\n";
break;
case 'L': case 'l': phonetic += " Lima\n";
break;
case 'M': case 'm': phonetic += " Mike\n";
break;
case 'N': case 'n': phonetic += " November\n";
break;
case 'O': case 'o': phonetic += " Oscar\n";
break;
case 'P': case 'p': phonetic += " Papa\n";
break;
case 'Q': case 'q': phonetic += " Quebec\n";
break;
case 'R': case 'r': phonetic += " Romeo\n";
break;
case 'S': case 's': phonetic += " Sierra\n";
break;
case 'T': case 't': phonetic += " Tango\n";
break;
case 'U': case 'u': phonetic += " Uniform\n";
break;
case 'V': case 'v': phonetic += " Victor\n";
break;
case 'W': case 'w': phonetic += " Whiskey\n";
break;
case 'X': case 'x': phonetic += " X-Ray\n";
break;
case 'Y': case 'y': phonetic += " Yankee\n";
break;
case 'Z': case 'z': phonetic += " Zulu\n";
break;
default: cout << "You did not enter a name" << endl;
}
count++;
}
cout << "The word "<< word <<" in the ICAO alphabet is:\n"
<< phonetic << endl;
return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
字串=”,拼音;
整数计数=0;
cout>单词;
while(count 默认值:cout如果我正确理解了您的帖子,那么您不希望拆分字符串,而是希望遍历它的字符
在C++11中:
for (char& c : word) {
// switch (c)
}
如果我正确理解了您的帖子,那么您不希望拆分字符串,而是希望遍历它的字符
在C++11中:
for (char& c : word) {
// switch (c)
}
要遍历字符串,只需使用迭代器:
std::string test_string = "test";
for( auto const& character : test_string )
{
std::cout << character << "\n";
}
std::string test\u string=“test”;
for(自动常量和字符:测试字符串)
{
std::cout要遍历字符串,只需使用迭代器:
std::string test_string = "test";
for( auto const& character : test_string )
{
std::cout << character << "\n";
}
std::string test\u string=“test”;
for(自动常量和字符:测试字符串)
{
std::coutinfinitezero的答案是完全正确的,可能是这种情况下的最佳解决方案
我想另外展示一个无循环的解决方案,它也是基于std::unordered_map
,并且能够阅读完整的句子
基本思想是:基于将单个字符转换为iCoWord的要求,我决定为此使用一个专用函数:std::transform
。您可以查看文档
请参阅下面的附加/替代解决方案:
#include <iostream>
#include <unordered_map>
#include <string>
#include <algorithm>
#include <iterator>
int main()
{
// Preinitialize an unordered map
std::unordered_map<int, std::string> alpha =
{
{'a', "Alpha"},{'b', "Bravo"},{'c', "Charlie"},{'d', "Delta"},{'e', "Echo"},{'f', "Foxtrot"},{'g', "Golf"},
{'h', "Hotel"},{'i', "Indiana"},{'j', "Julia"},{'k', "Kilo"},{'l', "Lima"} ,{'m', "Mike"},{'n', "November"},
{'o', "Oscar"},{'p', "Papa"},{'q', "Quebec"},{'r', "Romeo"},{'s', "Sierra"},{'t', "Tango"},{'u', "Uniform"},
{'v', "Victor"},{'w', "Whiskey"},{'x', "X-Ray"},{'y', "Yankee"},{'z', "Zulu"}};
// Read word form user
if (std::string word; std::getline(std::cin, word)) {
// Show output to user
std::cout << "\n\n" << word << " --> ";
// Convert and show
std::transform(word.begin(), word.end(), std::ostream_iterator<std::string>(std::cout, " "),
[&](const char c) { return (isalpha(c) ? alpha[tolower(c)] : ""); });
}
return 0;
}
#包括
#包括
#包括
#包括
#包括
int main()
{
//预初始化无序映射
std::无序映射alpha=
{
{'a',“Alpha”},{'b',“Bravo”},{'c',“Charlie”},{'d',“Delta”},{'e',“Echo”},{'f',“Foxtrot”},{'g',“Golf”},
{'h',“Hotel”},{'i',“Indiana”},{'j',“Julia”},{'k',“Kilo”},{'l',“Lima”},{'m',“Mike”},{'n',“十一月”},
{'o',“奥斯卡”},{'p',“爸爸”},{'q',“魁北克”},{'r',“罗密欧”},{'s',“塞拉”},{'t',“探戈”},{'u',“制服”},
{'v',“Victor”},{'w',“威士忌”},{'x',“x射线”},{'y',“Yankee”},{'z',“Zulu”};
//读取word表单用户
if(std::string word;std::getline(std::cin,word)){
//向用户显示输出
std::coutinfinitezero的答案是完全正确的,可能是这种情况下的最佳解决方案
我想另外展示一个无循环的解决方案,它也是基于std::unordered_map
,并且能够阅读完整的句子
基本思想是:基于将单个字符转换为iCoWord的要求,我决定为此使用一个专用函数:std::transform
。您可以查看文档
请参阅下面的附加/替代解决方案:
#include <iostream>
#include <unordered_map>
#include <string>
#include <algorithm>
#include <iterator>
int main()
{
// Preinitialize an unordered map
std::unordered_map<int, std::string> alpha =
{
{'a', "Alpha"},{'b', "Bravo"},{'c', "Charlie"},{'d', "Delta"},{'e', "Echo"},{'f', "Foxtrot"},{'g', "Golf"},
{'h', "Hotel"},{'i', "Indiana"},{'j', "Julia"},{'k', "Kilo"},{'l', "Lima"} ,{'m', "Mike"},{'n', "November"},
{'o', "Oscar"},{'p', "Papa"},{'q', "Quebec"},{'r', "Romeo"},{'s', "Sierra"},{'t', "Tango"},{'u', "Uniform"},
{'v', "Victor"},{'w', "Whiskey"},{'x', "X-Ray"},{'y', "Yankee"},{'z', "Zulu"}};
// Read word form user
if (std::string word; std::getline(std::cin, word)) {
// Show output to user
std::cout << "\n\n" << word << " --> ";
// Convert and show
std::transform(word.begin(), word.end(), std::ostream_iterator<std::string>(std::cout, " "),
[&](const char c) { return (isalpha(c) ? alpha[tolower(c)] : ""); });
}
return 0;
}
#包括
#包括
#包括
#包括
#包括
int main()
{
//预初始化无序映射
std::无序映射alpha=
{
{'a',“Alpha”},{'b',“Bravo”},{'c',“Charlie”},{'d',“Delta”},{'e',“Echo”},{'f',“Foxtrot”},{'g',“Golf”},
{'h',“Hotel”},{'i',“Indiana”},{'j',“Julia”},{'k',“Kilo”},{'l',“Lima”},{'m',“Mike”},{'n',“十一月”},
{'o',“奥斯卡”},{'p',“爸爸”},{'q',“魁北克”},{'r',“罗密欧”},{'s',“塞拉”},{'t',“探戈”},{'u',“制服”},
{'v',“Victor”},{'w',“威士忌”},{'x',“x”-