将由输入文件确定的多个相同字符串(星号)串在一起。 C++

Posted

技术标签:

【中文标题】将由输入文件确定的多个相同字符串(星号)串在一起。 C++【英文标题】:Stringing together multiples of the same string (an asterisk) determined by an input file. C++ 【发布时间】:2021-02-27 18:57:13 【问题描述】:

本质上,目标是读取输入文件(因此是 inFileinFileName)并使用 ID(例如 1375892)输出带有星号的人口增长(例如 1375892),从 1900 年到 2020 年以 20 年为增量。

因此,1 个星号代表 1000 人,3 个星号代表 3000 人,等等。输入文件包含 5000 和 7000 之类的数字,我需要使用它们来计算我需要的星号数量(除以 1000)。即便如此,我仍试图找出转换asteriskNum(我需要使用的星号数量)的最后一步,并让它输出星号字符串,而不是我需要多少星号的整数。

我当然知道我遗漏了一些东西,但即使在询问了我的老师并浏览了我的教科书和笔记之后,我仍然无法弄清楚如何解决这个具体问题。

#include<iostream>

#include<iomanip>

#include<string>

#include<fstream>

using namespace std;

int main()
   string asterisk = "*";
   string firstName;
   int PopNum0;
   int year1900;
   int asteriskNum;
   const string INTROLINE"POPULATION GROWTH \n(each * represents 1000 people)";
   cout << INTROLINE << "\n";

   string inFileName="DL8_L5_Morrison.txt";
   ifstream inFileinFileName;

if (inFile)

   cout << inFileName << " opened for reading. \n";

   inFile >> firstName;

   while (not inFile.eof())
     inFile >> PopNum;
     asteriskNum = PopNum/1000;
     cout << year << " " << asteriskNum << " " <<  << "\n";
     year+=20;

   inFile.close();

else 
   cout << inFileName << " did not open for reading. \n";
   cout<<"Goodbye!\n";
   return EXIT_SUCCESS;


【问题讨论】:

我开始格式化您的代码,但在这样做的同时,我注意到一些问题(似乎)缺少右大括号 ()。请(彻底)检查并应用任何必要的更正。 (在 Stack Overflow 上更正其他人的问题中的代码是不行的。) 修复格式....目前代码不可读。 欢迎来到 Stack Overflow!请edit您的代码将其减少为您的问题的minimal reproducible example。您当前的代码包含许多与您的问题无关的内容 - 一个最小样本通常看起来类似于一个好的单元测试:只执行一项任务,并为可重复性指定输入值。 【参考方案1】:

您可以使用 std::string 对象并使用将计数和字符作为参数的构造函数 (constructor version #2 here)。这使用int作为count参数,但更好将其转换为size_t类型(或者只是将计算值作为@首先是987654325@):

//...
  asteriskNum = PopNum/1000;
  cout << year << " " << std::string(static_cast<size_t>(asteriskNum), '*') << std::endl;
//...

【讨论】:

使用字符串构造函数是一个很好的解决方案,我不会考虑。但是,我想知道您转换为 size_t 的理由是什么? 使用不必要的演员表更糟糕static_cast 将强制编译器关闭并接受一大堆错误的转换。如果必须,请使用对类型的显式控制,但要使用普通的隐式转换而不是强制转换。 @Perette 如果没有将 explicit 强制转换为 size_t,您的编译器可能会发出警告,说明 (signed) 之间的 implicit 转换int 给定和(未签名)size_t 预期。然而,正如 Ben Voigt 所说,以这种方式关闭编译器的警告是好是坏是一个争论的问题。

以上是关于将由输入文件确定的多个相同字符串(星号)串在一起。 C++的主要内容,如果未能解决你的问题,请参考以下文章

确定当前正在播放的音乐保留文件星号

苹果密码钥匙串在哪里

黑斑羚中的星号或百分比符号

合并单元格情况下怎么快速把相同的内容再次合并在一起?

c语言如何输出星号三角形*****

使用循环将变量列表与文件名串在一起