我應該在這行代碼中做什么(由注釋突出顯示)?
# include <iostream>
int main()
{
int occurrences = 0;
std::string::size_type start = 0;
std::string base_string = "Hello World in C !";
std::string to_find_occurrences_of = "o"," "; // error
while ((start = base_string.find(to_find_occurrences_of, start)) != std::string::npos) {
occurrences;
start = to_find_occurrences_of.length();
}
std::cout<<occurrences;
return 0;
}
我想string to_find_occurrences_of = "o"," "一次列印這兩個字符(但 IDE 引發錯誤),因為我不想一遍又一遍地定義字串(和函式)來string base_string一一查找字符的出現。
這聽起來像是一個愚蠢的問題,但我想知道這個錯誤的解決方案。
感謝任何可能正在閱讀此問題或回答的人!!!
uj5u.com熱心網友回復:
std::string to_find_occurrences_of = "o"," "; 不會編譯,因為你有兩個字串,而不是一個。
您可以只列出要查找的內容的初始化串列:
int main()
{
int occurrences = 0;
// std::string::size_type start = 0; // need to reset for each character
std::string base_string = "Hello World in C !";
for (std::string to_find_occurrences_of : { "o", " " }) // OK
{
std::string::size_type start = 0; // start from the beginning for each character
while ((start = base_string.find(to_find_occurrences_of, start)) != std::string::npos) {
occurrences;
start = to_find_occurrences_of.length();
}
}
std::cout << occurrences;
}
uj5u.com熱心網友回復:
您可以改用字串的 std::vector :
# include <iostream>
# include <vector>
int main()
{
int occurrences = 0;
std::string::size_type start = 0;
std::string base_string = "Hello World in C !";
std::vector<std::string> to_find_occurrences_of;
to_find_occurrences_of.push_back("o");
to_find_occurrences_of.push_back(" ");
for (size_t i = 0; i < to_find_occurrences_of.size(); i ){
start = 0;
while ((start = base_string.find(to_find_occurrences_of.at(i),start)) != std::string::npos) {
occurrences;
start = to_find_occurrences_of.at(i).length();
}
}
std::cout<<occurrences;
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/510266.html
標籤:C 细绳
上一篇:在多個分隔符后拆分字串并包含它
下一篇:如何替換url中的動態內容?
