首页 > 试题广场 >

有以下程序 #include ...

[单选题]
有以下程序
#include<iostream> 
#include<fstream> 
#include<string> 
using namespace std; 
int main()  {
    ofstream File1("text.txt");  
    string d("20160314"); 
    string y=d.substr(0,4); 
    int k=d.find("2");
    int i=d.find("3"); 
    string m=d.substr(k+2,i-k); 
    string dd=d.substr(i+1,2); 
    string n=dd+m+y; 
    File1<<n<<endl; 
    File1.close(); 
    return 0;
}                                            

                                       
文件text.txt中写入的结果是(      )?
  • 20160314
  • 14032016
  • 14160312016
  • 20031416

substr(x, y)返回从位置x开始,长度为y的字符串,位置x下标从0开始。
find("ch")返回字符ch在主串中的位置,下标从0开始。

发表于 2020-10-07 19:25:29 回复(0)

解析:

strsub:函数原型basic_string substr( size_type _Off = 0, size_type _Count = npos ) const;

使用方式:str.substr(pos, n),返回一个string,包含从位置pos(从下标0开始)开始的n个字符


find:函数原型size_t find (const string& str, size_t pos = 0) const noexcept;

使用方式:str1.find(str2, pos),从位置pos后面开始,在str1中寻找str2,然后返回str2第一个字符在str1中的下标(从下标0开始)


代码中:

①y = 2016

②k = 0

③i = 5

④m = d.substr(2, 5) = 16031

⑤dd = d.substr(7, 2) = 14

⑥n = 14 + 16031 + 2016 = 14160312016(字符串)

发表于 2022-02-23 10:02:44 回复(1)
开始之前理解,substr(x,y)表示从第x位开始往后读取y个字符;find('x')表示读取字符串中x,返回的是位置。 跟着程序往下走, y=2016;//从字符串第0号元素开始读取4位 k=0;//2是字符串中第0号位置元素; i=5;//3是字符中第5号元素; 那么,有 m=d.substr(k+2,i-k)=d.substr(2,5)=16031; dd=d.substr(i+1,2)=d.substr(6,2)=14; 最后,字符串拼接起来 n=dd+m+y=14160312016
发表于 2020-12-30 09:43:10 回复(0)
文件 `text.txt` 中写入的结果应该是 `142016`。

下面是程序的详细解释,逐行进行说明:

```
ofstream File1("text.txt");
```

这句话声明和打开一个文件输出流 `File1`,将输出写入文件 `text.txt` 中。

```
string d("20160314");
```

这句话定义了一个字符串变量 `d`,并将其初始化为字符串 "20160314"。

```
string y=d.substr(0,4);
```

这句话将字符串 `d` 的前四个字符提取出来,即年份部分,保存到字符串变量 `y` 中。

```
int k=d.find("2");
int i=d.find("3");
```

这两句话分别在字符串 `d` 中查找字符 "2" 和字符 "3" 第一次出现的位置,并将它们的下标分别存储在整数变量 `k` 和 `i` 中。

```
string m=d.substr(k+2,i-k);
```

这句话使用字符串的 `substr()` 函数,从位置 `k+2` 处开始提取长度为 `(i-k)` 的子串,即月份部分,保存到字符串变量 `m` 中。

```
string dd=d.substr(i+1,2);
```

这句话使用字符串的 `substr()` 函数,从位置 `i+1` 处开始提取长度为 2 的子串,即日期部分,保存到字符串变量 `dd` 中。

```
string n=dd+m+y;
```

这句话将字符串变量 `dd`、`m` 和 `y` 拼接成一个新的字符串,即按照日月年的顺序排列,并将结果保存到字符串变量 `n` 中。

```
File1<<n<<endl;
```

这句话将字符串变量 `n` 写入文件输出流 `File1` 中,并且在结尾添加一个换行符,以便下次写入时不会和上一次的内容连在一起。

```
File1.close();
```

这句话关闭文件输出流 `File1`,确保数据被正确地写入了文件中。

因此,根据程序的运行过程,文件 `text.txt` 中写入的结果应该是 `142016`。其中,“14”为日期部分,“20”为月份部分,“16”为年份部分,按照日月年的顺序排列。
发表于 2023-10-20 19:19:01 回复(0)
int k=d.find("2");在d中寻找2这个数字的位置,第一位是0。 int i=d.find("3");在d中寻找3这个数字的位置。 所以k=0,i=5。
发表于 2023-02-14 16:27:08 回复(0)
substr函数是截取函数吧?
发表于 2020-08-18 15:45:55 回复(0)