想法: 我正在尝试创建一个程序来搜索.txt文件中的用户输入的单词。没有给出单词的大小。我想找到一种动态存储用户单词的方法,以便将其与文件中的其他单词进行比较。
整个程序非常庞大,因此我只附加了与问题有关的部分。
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <cstdlib>
#include <vector>
#include <string>
void vectorfill(vector<char>& newword) //filling char vector
{
char input;
scanf_s("%c", &input);
while (input != -1)
{
newword.push_back(input);
scanf_s("%c", &input);
}
}
int main (void)
{
vector<char> word;
printf("Enter a word: (-1 to finish)");
vectorfill(word);
}
问题:
1)在这种情况下,char向量是最好的主意吗?
2)(如果我们对char vector满意的话)如何使编译器理解用户写完单词了?我们可以请他在末尾加上(-1)吗?有没有更好的方法来标记输入的结尾?
答案 0 :(得分:1)
1>否。请使用std::string
2>是。使用空格。
示例:
#include <iostream>
#include <string>
int main ()
{
std::string word;
std::cout << "Enter a word" << std::endl;
std::cin >> word;
// do something with word. For example,
std::cout << "You entered" << word << '\n';
}
一旦用户键入至少一个数字,字母或其他非whitespace character后跟一个空格字符,就会在word
中捕获一个单词。如果您有特殊要求,例如该单词只能包含字母(没有数字,铃铛,ASCII艺术字符等),则使用简单的isalpha
循环就可以用几行代码进行排序,但不能少有std::find_if
和isalpha
。
答案 1 :(得分:0)
如果搜索内容在txt文件中。使用std::vector<std::string>
可能更好。您可以使用split char分割单词。
如果内容来自用户的键盘输入。您还可以使用std::string
存储每个键入的单词,并将其存储在std::vector<std::string>
中。就是这样:
std::string s;
std::vector<std::string> vec;
std::cout << "Please enter somestring" << std::endl;
while (cin >> s)
{
vec.push_back(s);
cout << "You have entered : " << s << endl;
}