if(!next.find("+")){//////////////////////searching for +
for(int j=0;j<itemSize;j++){
if(!addItem[j].find(next)){
cout << addItem[j] << endl;//////why doesn't this work for multible words???
}
}
}
if(!next.find("@")){//////////////////////searching for @
for(int j=0;j<itemSize;j++){
if(!addItem[j].find(next)){
cout << addItem[j] << endl;//why doesn't this work for multiple words???
}
}
}
爲什麼我的.find()for @和+只有在第一個單詞中找到它們時才返回true?我試圖搜索整個字符串,並找出整個字符串。爲什麼string.find()僅在第一個單詞中找到它們時才返回true?
這是一個命令行參數程序; 如果我的todo.txt包含: 「狗」 「貓」 「鳥+動物」 「+動物」 沒有「」。
如果我使用.find()搜索+動物,只打印最後一個元素。我試圖「鳥+動物」和「+動物」打印。怎麼了?
完整的代碼::
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <stdlib.h>
using namespace std;
int main(int argc, char* argv[]){
vector<string> addItem;
int numLines =0;
ifstream inDo("todo.txt");
string input;
while(getline(inDo, input)){////////////to get number of lines
numLines++;
addItem.push_back(input);
}
remove("todo.txt");
ofstream todo("todo.txt", std::fstream::app);
for(int i=0; i<argc; i++){
string line = argv[i];
if(!line.find("add")){/////////////////////adds to the list
addItem.push_back(argv[i+1]);
cout << addItem.back() << " - added on line " << numLines+1 << endl;
}
if(!line.find("clear")){////////////////////////////clears the list
while(!addItem.empty()){
addItem.pop_back();
}
cout << "List Has Been Cleared."<< endl;
}
if(!line.find("Do")){////////////////////to remove items from list
if(i+2==argc){
int taskNum = atof(argv[i+1]);
cout << addItem[taskNum-1] << " has been completed << endl;
addItem.erase(addItem.begin()+(taskNum-1));
}
else{
cout << "Incorrect format, please retry with 'do #'" << endl;
}
}
if(!line.find("ls")){/////////////////////////prints the list
if(i+1==argc){
int count=0;
int listSize=addItem.size();
while(count < listSize){
cout << count+1 << " " << addItem[count] << endl;
count++;
}
}
if(i+2==argc){/////////////for searching for a certain word
int itemSize=addItem.size();
string next = argv[i+1];
for(int a=0;a<itemSize;a++){
if(!addItem[a].find(next)){
cout << addItem[a] << endl;
}
}
if(!next.find("+")){/////////////searching for +
for(int j=0;j<itemSize;j++){
if(!addItem[j].find(next)){
cout << addItem[j] << endl;
///doesn't work!!
}
}
}
if(!next.find("@")){//////////////////////searching for @
for(int j=0;j<itemSize;j++){
if(!addItem[j].find(next)){
cout << addItem[j] << endl;
//dosen't work!!
}
}
}
}
}
}
vector<string> temp;////////////////////reverse the vector order
while(!addItem.empty()){
temp.push_back(addItem.back());
addItem.pop_back();
}
while(!temp.empty()){////////////////////send to file
todo << temp.back() << "\n";
temp.pop_back();
}
todo.close();
return 0;
}
這就是一個loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooootoot代碼。請提供一個簡單的問題例子。 – Manu343726
@ user3092909這個*整個事物不可能是「有問題的部分」。 – 2013-12-11 21:23:15
對不起,我把部分我認爲是錯誤的頂部塊 – user3092909