- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在制作一个程序,它会在评论中添加我的姓名、日期、文件名以及对它的功能的描述。它还会查找任何 int
和 void
函数,添加每个函数的功能描述。我已经完成了这些步骤!
我创建了一个 vector<string>
它将整个文件读入自身。然后它搜索任何 void
或 int
vector 中的函数。如果它找到 int
它叫string findParameters
找到 int 的参数并在描述中列出它们。
示例:
/*THE DESCRIPTION THAT THE PROGRAM MADE IS BELLOW*/
/*Function: int nDigits
Description:
Description of the function
Parameters:
long long number: Description
Returns:
returnVal: Description
*/
/*THE FUNCTION THE PROGRAM WAS LOOKING FOR IS BELLOW*/
int nDigits(long long number){
int counter;
for (counter = 0; number > 0; counter++){
number = number / 10;
}
return counter;
}
问题
程序在不超过 160 行时运行良好,但当我输出时以及当我尝试在记事本中打开它时,超过它的任何内容都会将所有内容转换为十六进制,除了最后几个函数外,我的大部分代码都被删除了。
文件输出示例
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0020 2020 2020 200d 0a20 2020 2020
2020 2063 6f75 6e74 6572 2b2b 3b0d 0a20
2020 2020 2020 2066 616b 655f 6e75 6d62
6572 202f 3d20 3130 3b0d 0a20 2020 207d
0d0a 2020 2020 0d0a 2020 2020 0d0a 2020
当然有大约 400 行。
我不知道发生了什么,所以非常感谢任何帮助!我相信这可能限制了我在 vector 中放入多少行?
我的代码
查找参数函数
string findParameters(string line, string outputFileName, vector<string> &list_parameters){
ofstream outFile;
outFile.open(outputFileName, ios::out);
int comma;
string something;
int length;
int parstart;
int parend;
int last;
if (outFile.is_open()) {
if (line.find("(") != string::npos) {
last = parstart = line.find("(",0) + 1;
if (line.find(")", parstart + 1) != string::npos) {
parend = line.find(")", parstart + 1) + 1;
do {
comma = line.find(",", last+1);
if (comma == string::npos) {
length = parend - last;
something = line.substr(last, length-1);
list_parameters.push_back("\n " + something);
}
else {
length = comma - last;
something = line.substr(last, length);
list_parameters.push_back("\n " + something);
last = comma+1;
}
} while (comma != string::npos);
}
}
outFile.close();
}
else {
cout << "\nfile find parameters did not open";
}
return "";
}
输出 header 函数
//Starting Header
//File Name
outFile << "/* \nFilename: " << outputFileName;
//Date
char date[9];
_strdate_s(date);
outFile << "\n\nDate: " << date << "\n";
//Description
outFile << "\nProgrammer: Dyrenex\n\nDescription:\n //Description of what the code in the file is meant to do and how it does what it is meant to do" << "\n";
outFile << "\n\n */ \n\n";
size_t found;
//Writing the Rest of Input File
while (isDone != existingFile.size()){
//Finding void functions
line = existingFile[isDone];
if (line.find("void") != string::npos){
//cout << "\nFound a void!" << "\n";
outFile << "\n/*Function: \nDescription:\n Description of the function\nParameters:" <<
"\n Parameters here\n Returns:\n returnVal:*/";
}
else if (line.find("int",0) != string::npos) {
int intstart = line.find("int");
if (line.find("(", intstart + 1) != string::npos) {
int parstart = line.find("(", intstart + 1);
if (line.find(")", parstart + 1) != string::npos) {
int parend = line.find(")", parstart + 1);
vector<string> list_parameters;
outFile << "\n/*Function: " << line.substr(intstart, parstart)
<< "\nDescription: \n Description of the function\nParameters:";
findParameters(line, outputFileName,list_parameters);
int counter = 0;
while (counter != list_parameters.size()) {
outFile << list_parameters[counter] << ": Description";
counter++;
}
outFile << "\n Returns:\n returnVal: Description\n*/";
}
}
}
//outputting file line
outFile << "\n" << existingFile[isDone];
isDone++;
}
outFile.close();
读取现有文件
ifstream inFile;
inFile.open(inputFileName, ios::in);
if (inFile.is_open()){
while (!inFile.eof()){
getline(inFile, line);
existingFile.push_back(line);
}
inFile.close();
}
*这不是我的作业!我将此作为一个副项目来自动将我的名字写在我的作业上,这样我就不必为每项作业都这样做! *
提前致谢!
我试图将标题放在我的问题中以使我的代码整洁,但如果你不喜欢我的问题的格式这里是我所有代码的链接 http://pastebin.com/4P5hFzQm
波纹管是我试图操作的 .cpp(输入文件)
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
int nDigits(long long number){
int counter;
for (counter = 0; number > 0; counter++){
number = number / 10;
}
return counter;
}
int reverse(long long number){
int reverse = 0;
while (number > 0){
reverse = reverse * 10;
reverse = reverse + (number % 10);
number = number / 10;
}
return reverse;
}
bool isPalindrome(long long number){
if (number == reverse(number)){
return true;
}
else{
return false;
}
}
bool repeatsDigit (long long number){
int temp[1024];
long long fake_number = number;
int counter = 0;
int limit = nDigits(number);
while (fake_number > 0){
temp[counter] = fake_number % 10;
counter++;
fake_number /= 10;
}
for (counter = 0; counter < limit; counter++){
for (int counter2 = 0; counter2 < limit; counter2++){
if (temp[counter] == temp[counter2] && counter != counter2){
return true;
}
}
}
return false;
}
void digitCount( long long n, int& eCount, int& oCount){
int temp[1024];
long long fake_number = n;
int counter = 0;
int limit = nDigits(n);
while (fake_number > 0){
temp[counter] = fake_number % 10;
counter++;
fake_number /= 10;
}
for (counter = 0; counter < limit; counter++){
if (temp[counter] % 2 == 0){
eCount++;
}
else{
oCount++;
}
}
}
int largest(long long n){
int temp[1024];
long long fake_number = n;
int counter = 0;
int limit = nDigits(n);
int largestnum = 0;
while (fake_number > 0){
temp[counter] = fake_number % 10;
counter++;
fake_number /= 10;
}
for (counter = 0; counter < limit; counter++){
if (largestnum < temp[counter]){
largestnum = temp[counter];
}
}
return largestnum;
}
int smallest(long long n){
int temp[1024];
long long fake_number = n;
int counter = 0;
int limit = nDigits(n);
int smallestnum = 10;
while (fake_number > 0){
temp[counter] = fake_number % 10;
counter++;
fake_number /= 10;
}
for (counter = 0; counter < limit; counter++){
if (smallestnum > temp[counter]){
smallestnum = temp[counter];
}
}
return smallestnum;
}
double average(long long n){
int temp[1024];
long long fake_number = n;
int counter = 0;
int limit = nDigits(n);
double averagenum = 0;
while (fake_number > 0){
temp[counter] = fake_number % 10;
counter++;
fake_number /= 10;
}
for (counter = 0; counter < limit; counter++){
averagenum += temp[counter];
}
return averagenum/nDigits(n);
}
int main(){
long long something = 12345;
int evenCount = 0;
int oddCount = 0;
/*real output*/
ifstream file;
file.open("integers.dat",ios::in);
if (file.is_open()){
file >> something;
cout << "The number of digits in " << something << " is " << nDigits(something) << "\n";
file >> something;
cout << "The reverse of : " << something << " is " << reverse(something) << "\n";
file >> something;
if (isPalindrome(something) == 1){
cout << "There is a Palindrome in number: " << something << "\n";
}
else{
cout << something << " is NOT a Palindrome" << "\n";
}
file >> something;
if (repeatsDigit(something) == 1){
cout << "There are repeat digits in " << something << "\n";
}
else{
cout << "There are NOT repeat digits: in " << something << "\n";
}
file >> something;
digitCount(something, evenCount, oddCount);
cout << "There are " << evenCount <<" Even and, " << oddCount <<" Odd in the number " << something << "\n";
file >> something;
cout << "The largest Number in " << something << " is " << largest(something) << "\n";
file >> something;
cout << "The smallest Number in " << something << " is " << smallest(something) << "\n";
file >> something;
cout << "The average Number in " << something << " is " << fixed << setprecision(1) << average(something) << "\n";
}
else {
cout << "File did not open";
}
return 0;
}
此外,输出文件是程序正在命名的新文件,因此可以随意命名...这并不重要
再次感谢您,如果您有任何问题,请提出!我正在尝试尽可能多地学习,这个网站也在帮助我做到这一点!
最佳答案
我无法理解你的代码,但它看起来并没有对 vector 做太多事情,它只是存储它。如果我没记错的话,你可以像下面的代码一样让你的程序更短。
然而,要正确识别函数,您确实需要将线存储在 vector 中以检查它。
int main()
{
const char* note = "Etcetera Etcetera";
ifstream in("in.cpp");
ofstream out("out.cpp");
string line;
while (getline(in, line))
{
if (
(
line.find('(') != string::npos &&
line.find(')') != string::npos
)
&&
(
line.find("double") == 0 ||
line.find("int") == 0 ||
line.find("bool") == 0 ||
line.find("void") == 0
)
)
{
out << note << endl;
}
out << line << endl;
}
system("pause");
return 0;
}
关于c++ - 文件输出为十六进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33294187/
我有一个消息 static int[] message = { 0x01, 0x10, 0x00, 0x01, // port addres 01 - 08
如何将十进制转换为以下格式的十六进制(至少两位,零填充,不带 0x 前缀)? 输入:255 输出:ff 输入:2 输出:02 我尝试了 hex(int)[2:] 但它似乎显示了第一个示例而不是第二个示
这个问题已经有答案了: 已关闭12 年前。 Possible Duplicate: Large numbers in Pascal (Delphi) 我正在尝试将 66 位值转换为十进制。 我注意到d
给定一个十进制数字列表,如何将每个数字转换为其等效的十六进制值,反之亦然? 例如: (convert2hex 255 64 64); ->(FF 40 40) (convert2dec FF 40 4
var color = Math.floor(Math.random() * 16777215).toString(16); var hex = Number.parseInt(col
我一直被教导 0-9 代表 0 到 9 的值,A、B、C、D、E、F 代表 10-15。 我看到这种格式 0x00000000,它不适合十六进制模式。有没有导游或导师可以解释一下? 我在谷歌上搜索了十
我目前正尝试像十六进制编辑器一样将文件读取为十六进制值。为了解释这个问题,让我们假设我有一个test.txt,里面有一个简单的“Hello world”。我正在尝试使用接近以下代码的程序以十六进制形式
我正在尝试获取元素背景颜色 $(document).ready(function(){ $.each('.log-widget',function(){ console.log($(t
0x40130020的十六进制值是 2.296883 的浮点值, 使用本网站 http://gregstoll.dyndns.org/~gregstoll/floattohex/ .这如何实现到 Lu
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,vis
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
谁能解释一下我们如何计算十六进制浮点常量的值。我在看书,发现0x0.3p10代表值192。 最佳答案 指数仍以十进制表示,但底数为二,尾数为十六进制。 所以 0.3P10 是 (3 × 16−1) ×
我正在尝试创建一个标签云,需要帮助来创建一个函数来计算应用于每个标签链接所需的颜色。 我有 3 个变量: 单个标签重要性(从 0.1 到 1) 最大(最重要)的标签颜色(十六进制代码,例如“fff00
大家好,我想发送尽可能短的字符串/值。如果我有以下内容 1)l23k43i221j44h55uui6n433bb4 2)124987359824369785493584379 3)kla^askdja
我知道你会写... background-color: #ff0000; ...如果你想要红色的东西。 你可以写... background-color: rgba(255, 0, 0, 0.5);
我有一些传递地理位置坐标的二进制数据流 - 纬度和经度。我需要找到它们编码的方法。 4adac812 = 74°26.2851' = 74.438085 2b6059f9 = 43°0.2763'
我想从 my_table 中选择 family,其中 family LIKE '%HEX(9D)' 家庭十六进制格式以 9D 十六进制结尾 我将excel文件转换为sqlite数据库但是 我的一些数据
我有一组二进制配置文件,每个文件有三个版本——每个文件的原始版本和两个不同修改的版本。我需要能够同时看到两个版本和原始版本之间的差异。 我需要的是一个二进制文件的三向差异工具。通过相当费力的谷歌搜索,
我正在尝试将(可变长度)十六进制字符串转换为带符号整数(我需要正值或负值)。 [Int16] [int 32]和[int64] 似乎可以在2,4+字节长的十六进制字符串上正常工作,但我在使用3个字节的
如何将十六进制的 unicode 写入 Facebook“您在想什么”框? 我尝试过写: \u00B9 "\u00B9" ¹ "¹" 到目前为止没有任何效果 (让我补充一下,我是在 M
我是一名优秀的程序员,十分优秀!