【问题标题】:How to add a space into an array如何在数组中添加空格
【发布时间】:2017-04-11 11:40:36
【问题描述】:

虽然问题的主题不太准确,但问题就在这里。我有一个文件,一个人在其中写下他的文本,例如“今天是非常美好的一天”,我将它存储在一个 txt 文档中。然后我的任务是获取所有这些字符并将它们进一步移动一个字母(a 变成 b,z 变成 a 等等)。但我需要保留它们的位置。

#include <iostream>
#include <fstream>
#include <iomanip>
#include <cmath>

using namespace std;

int main(){

string a;
string Code;
string New;

ifstream File ("Txt.txt");
File>>Code;

for (int i = 0; i<Code.size(); i++){
    if (Code.at(i) >= 'A' && Code.at(i) <= 'V' || Code.at(i) >= 'a' && Code.at(i) <= 'v') {
            a = Code.at(i) + 4;
            New += a;
            }
    else if (Code.at(i) == 'W'){
            a = 'A';
            New += a;}
    else if (Code.at(i) == 'X'){
            a = 'B';
            New += a;}
    else if (Code.at(i) == 'Y'){
            a = 'C';
            New += a;}
    else if (Code.at(i) == 'Z'){
            a = 'D';
            New += a;}
    else if (Code.at(i) == 'w'){
            a = 'a';
            New += a;}
    else if (Code.at(i) == 'x'){
            a = 'b';
            New += a;}
    else if (Code.at(i) == 'y'){
            a = 'c';
            New += a;}
    else if (Code.at(i) == 'z'){
            a = 'd';
            New += a;}
    else if (Code.at(i) == ' '){
            a = Code.at(i);
            New += a;
            }
        }cout<<New;

return 0;
}

但程序只读取第一个单词。我应该如何更改程序以读取所有空格的所有文本?

【问题讨论】:

  • 如果您意识到下一个字母是模 26,则您不需要所有这些 if 语句。例如,如果字母是 'z',因为 'z 是第 26 个字母, (26 + 1) mod 26 = 1,'a' 是第一个字符。
  • 我认为这回答了你的问题:stackoverflow.com/questions/37449872/…

标签: c++ spaces


【解决方案1】:

使用std::getline,像这样:

std::string line;
std::ifstream file("file.txt");
std::getline(file, line); //loads one line

顺便说一句,using namespace std; 是一种不好的做法,您应该保持全局​​命名空间干净并使用 std:: 前缀。如果你真的很懒,你可以只“导入”重要的部分。 using std::cin;

【讨论】:

  • 它只读取一行,然后你必须使用std::cout &lt;&lt; line &lt;&lt; std::endl。此外,如果要加载所有行,请使用循环:`
【解决方案2】:

指向文件末尾。

 void   openFile (ifstream& f)
   {
   const     long   LINE_LEN = 23;
   int   pos;
      // position to 256 lines before end of file

 f.open("demodoutcarr.txt");
 f.seekg(0, ios::end);
 pos = f.tellg();
 pos -= LINE_LEN * NBR_RECORDS;
 f.seekg(pos);
  }

【讨论】:

  • NBR_RECORDS 没有声明,因为我不像你那样理解代码,我不知道如何修改它。你能帮忙吗?
  • 尝试像这样打开你的文件,ifstream File("Text", ios::in|ios::ate); //最后
猜你喜欢
  • 2012-12-06
  • 2017-02-24
  • 2018-06-09
  • 2018-10-16
  • 1970-01-01
  • 2021-02-04
  • 2017-07-23
  • 2023-01-02
  • 2018-06-29
相关资源
最近更新 更多