gpt4 book ai didi

c++ - 与阅读不同格式的数字字符有关的问题

转载 作者:太空宇宙 更新时间:2023-11-04 13:27:47 25 4
gpt4 key购买 nike

我如何读取这些元素并将它们存储到两个不同的数组中,即:<?> 中的数字和 [?] 中的单词单独读入和存储。

<98>
Avs [adadada]
<45>
[adafaf] BBBHADA
asdadqd aada [Mammoth]
<-1> // ends the read

文件中的其余信息无用,不需要存储。

编辑:

按照其中一个答案的建议,这是我的第一次尝试:

#include <iostream>
#include <sstream>
#include <fstream>
#include <string.h>


using namespace std;

int main(int argc, char* argv[])
{
if(argc != 3)
cout<< "Error! Not enough file!"<<endl;
int** page = new int*[];
char** words = new char*[];

}
//---------------------------------------------------------
void readInput(int** page1, char** name1){
istream is;
char par1, par2;
int usefulVal;
is >> par1 >> usefulVal >> par2;

// check if any input
if(!is) return is;

// check for valid input format
if (par1 != '<' || par2 != '>'){
// set failbit to indicate invalid input format
is.clear(ios_base::failbit);

// assign input values to second argument
page1(usefulVal);

char par_1, par_2;
string string_value;
is >> par1 >> string_value >> par2;
if(!is) return is;
if (par_1 != '[' || par_2 != ']')
{
is.clear(ios_base::failbit);
return is;
}
name1(string_value);
return is;
}

问题:

<罢工>1。有没有办法分别读取和存储上述元素?
2. 我做错了什么?

P.S.:我只是在尝试一些 C++。希望有人能对此有所启发,谢谢!

最佳答案

要指定您的格式并只读取特定元素,您可以重载 operator >> .比如第一种格式:< int_value > , 可以通过以下方式实现:

istream& operator>>(istream& is, class_name& array_name){
char par2, par2;
int int_value;
is >> par1 >> int_value >> par2;
// check if any input
if(!is) return is;
// check for valid input format
if (par1 != '<' || par2 != '>'){
// set failbit to indicate invalid input format
is.clear(ios_base::failbit);
return is;
}
// assign input values to second argument
array_name(int_value);
// chain for consecutive use
return is;
}

和第二种格式:[ string_value ]与:

istream& operator>>(istream& is, class_name& separate_array_name){
char par2, par2;
string string_value;
is >> par1 >> int_value >> par2;
if(!is) return is;
if (par1 != '[' || par2 != ']'){
is.clear(ios_base::failbit);
return is;
}
separate_array_name(string_value);
return is;
}

注意事项:

两个例子中的第二个参数:class_name& array_nameclass_name& separate_array_name不是真正的类型,由您决定/实现。

编辑:

  1. 您定义的函数未在您的main() 中使用.
  2. 函数需要在 main() 之前定义或转发声明。
  3. 限制过度使用指针和动态分配的内存,因为它需要在最后处理(释放)。
  4. 查找如何使用 istream : 文件名、模式等。
  5. 更喜欢简单的功能,即做一个单一的过程。实现和检测错误要容易得多。

关于c++ - 与阅读不同格式的数字字符有关的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32750401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com